Skip to content

系统设计与分析 Homework1

简答题

1. 软件工程的定义

软件工程是在软件的开发、运行和维护中应用的一种系统的、可量化的方法,同时包含了对这一方法的研究,与软件生产的所有方面相关的工程学科。是对软件的工程应用。

2. 解释导致 software crisis 本质原因、表现,述说克服软件危机的方法

  • 本质原因: 硬件的快速发展导致计算能力的极大提高,超过了开发软件有效利用这些计算性能的能力。主要有以下两点体现
    1. 日益增长的需求使得软件生产力效率跟不上
    2. 软件开发方法没有跟上越来越复杂的软件开发。随着软件的复杂度不断增加,由于现有方法不足,对大型、复杂软件存在无法解决问题的情况。
  • 表现
    • 项目运行超过预算
    • 项目运行超时
    • 软件的使用效率较低
    • 软件质量过差
    • 软件不能满足用户需求
    • 项目无法管理,代码难以维护
    • 软件无法交付
  • 克服软件危机的方法
    • 正确认识计算机软件的内涵
    • 采用工程项目管理方法实施软件开发的组织管理, 使其成为一种组织良好、管理严密、协同配合的活动。
    • 采用成熟的软件开发技术和方法, 开发和使用适当的软件工具

3. 软件生命周期

软件生命周期是软件的产生直到报废或停止使用的生命周期,周期内有需求定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段。

4. SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)

  • Software Requirements 软件需求

    • 用来描述解决现实世界某个问题的软件产品及对软件产品的约束,设计需求获取、需求分析、建立需求规格说明和确认,领域问题建模,软件开发技术、经济和时间可行性分析。
    • 软件需求的好坏直接影响软件开发全过程。
  • Software Design 软件设计

    • 软件工程最核心的内容。软件设计由软件体系结构设计、软件详细设计两种活动组成。它涉及软件体系结构、构件、接口,还设计软件设计质量分析和评估、软件设计的表示、软件设计策略和方法等。
  • Software Construction 软件构造

    • 软件构造指通过编码、单元测试、集成测试、调试、确认等活动,生成可用的、有意义的软件。软件构造除要求粉盒设计功能外,还要求控制和降低程序复杂性、预计变更、进行程序验证和制定软件构造标准。软件构造与软件配置管理、工具和方法。
  • Software Testing 软件测试
    • 软件测试是软件生存周期的重要部分,涉及测试标准、技术、度量和测试过程。
    • 软件测试的目的是标识缺陷和问题,改善产品质量。软件测试覆盖整个软件开发过程。正确的软件工程质量观是预防、避免缺陷和问题。测试的终点是建立一个有限的测试用例集,动态地验证程序是否达到预期行为。
  • Software Maintenance 软件维护
    • 软件维护是软件生存周期的组成部分。软件维护要支持系统快速地、便捷地满足新的需求。基于服务的软件维护越来越受到重视。软件组织力图使软件运营时间更长,软件维护成为令人关注的焦点。
  • Software Configuration Management 软件配置管理
    • 软件配置管理是一种标识、组织和控制修改的技术,维护整个系统生命周期中软件配置的一致性和可追踪性。内容包括配置管理过程的管理、软件配置鉴别、配置管理控制管理、配置管理状态记录、配置管理审计、软件发布和交付管理。
  • Software Engineering Management 软件工程管理
    • 软件工程管理涉及规划,协调,测量,报告和项目/程序控制,以确保开发和维护软件是系统的,规范化的且量化的。
    • 软件工程管理知识领域涵盖启动和范围定义,软件项目规划,软件项目制定,产品验收,项目绩效审查和分析,项目结束和软件管理工具。
  • Software Engineering Process 软件工程过程
    • 软件工程知识领域关注软件生命周期过程的定义,实现,评估,测量,管理和改进。主题包括过程实现和改变,过程定义,过程评估模型和方法,测量和软件过程工具。
  • Software Engineering Models and Methods 软件工程模型与方法
    • 软件工程模型和方法解决了涵盖多个生命周期阶段的方法;其他涵盖特定生命周期阶段的特定方法。
  • Software Quality 软件质量
    • 软件质量是软件生命周期普遍关注的。
    • 此外,软件质量知识领域包括软件质量基础,软件质量管理过程和实际考量。
  • Software Engineering Professional Practice 软件工程专业实践
    • 软件工程专业实践关注软件工程师必须具备的知识,技巧和态度,以用一种专业,负责和正直的态度来时间软件工程
  • Software Engineering Economics 软件工程经济学

    • 软件工程经济学知识领域关注在商业环境中做出决策,以使技术决策和商业目标达成一致。
  • Computing Foundations 计算基础

    • 提供软件工程实践所需的计算背景,涵盖了提供软件工程实践所需的计算背景的基础主题。
  • Mathematical Foundations 数学基础
    • 提供软件工程实践所需的数学背景,涵盖了提供软件工程实践所必需的数学背景的基础主题
  • Engineering Foundations 工程基础
    • 提供软件工程实践所需的工程背景,涵盖了提供软件工程实践所必需的工程背景的基础主题。

5. 简单解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。

  • Level 1 - Initial(初始级): 软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。

  • Level 2 - Managed(可管理级): 建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。

  • Level 3 - Defined(已定义级): 已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。

  • Level 4 - Quantitatively Managed(量化管理级): 分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。

  • Level 5 - Optimizing(优化级): 过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。

6. SWEBok & CMMI

  • SWEBoK

    其全称为软件工程知识体系,其目的是为软件工程学科的范围提供一致的认识,为支持该学科的本体知识提供指导,为软件工程的系统性规范性以及可量化性。SWEBoK将软件工程学科的本体知识分为15个知识域,并对每个知识域中的重要概念和区别加以阐述说明,指导了软件工程的发展。其意义在于将原本混杂的软件工程知识体系化,将原本存在的知识分类整理,最后形成一个具有共识性和方向性的指南。

  • CMMI

    其全称为能力成熟度模型集成,是一个过程级别的改进模型,集成了各种现存实施的与将被发展出来的能力成熟度模型,本质是软件管理工程的一部分。其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。CMMI提供一个单一的集成化框架,从而消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,从总体上改进组织的质量和效率。CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面。